HyperCard 1.2(+), Hard Disk, Macintalk (optional; 2 MB RAM & 1200 K Multifinder partition recommended if Macintalk is used). System fonts: Chicago 12, Geneva 9, 10 & 12, Monaco 9.
• Please select “Tall Adjusted” in the Page Setup dialog when printing this file to an ImageWriter. •
Inventory:
1) Home (Developer’s Domicile) HyperCard Stack (locked)
2) DevDom Manual Microsoft Word 4 document
3) DevDom Manual.doc DOCMaker application
4) About these files… DOCMaker application
5) ShowDevDom Startup document (optional)
6) ShowDDGirl Startup document (optional)
7) ShowDDTools Startup document (optional)
Installation
First copy Developer’s Domicile and then unlock and use the copy. Never unlock your original copy. Developer's Domicile is a Home stack. HyperCard must open it as such for it to function properly. Opening it from your present Home stack will prevent certain variables from being initialized and many functions will be disabled. So be sure to actually replace your Home stack with this one or launch HyperCard by double-clicking on this stack.
Controls
In the upper left portion of each card, information is displayed about the current size of Developer's Domicile, the amount of free space in the stack, the available room on the disk and the available memory. Click on “Stack Size” to disable “idle” message handlers in this stack which may interfere with typing and selection of text. Click on “Free Space” to compact this stack and Option-click to compact all stacks in a folder (MassCompact). Click on “Memory” to see the space in the Operating System Stack.
The Cards
Stacks Card
The Stacks Card(s) are for the purpose of opening other HyperCard stacks. Simply click on any empty stack button to install a new stack. Dialogs will present you with choices of: the stack to install, a visual transition effect, an icon, and the name of the button (please be patient). Option-click on an installed stack button to reset (clear) it. The “Open Stack” button in the lower right corner can be used to open a HyperCard stack which is not installed. See “Button Installer Scripts” for information regarding the installation of stack launching buttons of other stacks.
Launcher Card
The Launcher Card(s) are used to launch other Macintosh applications and documents. Installation of a new application is similar to installing a new stack on the Stacks Card. If you choose to install a document you will also be asked for the application to use with it. Developer's Domicile will try to prevent you from choosing the wrong application for a document (which would crash). Once an application is chosen it is recorded so that Developer's Domicile will know about it. Option-click to reset (clear) an installed launcher button. The “App Launcher” button in the lower right corner can be used to open an application which is not installed.
Tools Card
The Tools Card is a convenient place to access custom HyperCard development tools. Each tool has an “Info” button which explains a little about the tool. To edit the “Tool Info” text, hold down the Option key while clicking on the “Info” button. If Macintalk is on please continue to hold down the Option key until the speech is finished. To go directly to the Tools card from any stack at any time just enter “TO” into the message box.
The Tools
The following tools may be used from any stack and can be run by typing the name of the tool or the tool's two letter abbreviation (upper or lower case) into the message box.
SearchScript searches all of the scripts in a stack for the specified search string. SearchScript comes with the original Home stack and is by Apple Computer. I have simply put a nice front end on it. Type “SS” into the message box to run.
Reveal Buttons and Reveal Fields are used to make visible any hidden buttons or fields. To reveal all buttons or fields type “RB” or “RF” as appropriate. To reveal a specific object, type the above and hold down the Option key when you press the Return or Enter key. A dialog will be presented showing all background or card buttons or fields (hidden or not). Choosing one will make it visible if is was not already so.
Obscure Buttons and Obscure Fields is used to re-hide the buttons or fields made visible with Reveal. When you use Reveal the object numbers of the buttons or fields made visible are put into a global variable. Obscure uses this information to re hide only those objects. That is why you should not delete anything after using Reveal until you have used the Obscure command. Objects made visible with Option-Reveal are not tagged for re-hiding by Obscure so it is alright to delete those objects.
Ruler shows the location, separation, and angle between any two points on the screen. Type “RU” to start Ruler. Click on any point and the message box will begin displaying the pointer's coordinates, the rectilinear separation, the radius, and the angle. Click again to freeze the display. Units are in pixels. Option-click to mark the points on the card or background with the pencil tool. This is very useful for laying out new designs.
Magic Finger is a mouseDown handler which hides any object when clicked on while the Shift and Option keys are held down. Caution! It is easy to accidentally hide something. As with many handlers, if the current stack has a mouseDown handler which does not pass the mouseDown message up the hierarchy, then Magic Finger will not work in that stack.
LockUnLockText is a mouseUp handler which will lock an unlocked text field and vice versa. Just Command-click on the field in an area where there is no text and the lockText property will be toggled. LockUnLockText may not work on fields with some mouseUp handlers and will not work if the field has a mouseDown or mouseUp handler that hides the field.
FieldPrint is a front end to the PrintField XCMD which will print the contents of any field. Type “FP” to summon a dialog for choosing a background or card field to print. FieldPrint works with both the ImageWriter and LaserWriter.
ResCopy is the ResCopy XCMD which allows copying and editing of HyperCard resources in a manor similar to Font/DA Mover. ResCopy is copyrighted by Apple Computer and may not be distributed without Apple's permission. As I do not have permission to distribute ResCopy you must obtain it yourself. It is highly suggested that you do so. Type “RC” to run ResCopy (when installed).
Info will put the following into the message box: the current stack's size, the size of its resource fork, the free space in the stack, the available memory, and the available room on the disk. Type "IN" to get info.
Message Helper retrieves previous messages typed into the message box for re-execution. Type Option-down arrow to recall the last message entered. Option-up arrow recalls the first message, and Option-left and right arrow scan back and forth through the messages. To clear out the list of previous messages type “clear.” This handler was written by Ellis Z. Gabovitch of Lynnfield, MA and published in April 89 MacUser, page 207.
SeeIcons uses the ChooseIcon XFCN to view the icons of any stack. Type “IC” to run. To go on an icon tour of a folder hold down the Option key while launching.
SendObject is used to automate the process of changing the object number of a button or field. It will send the object further or bring it closer through the object layers. Type “SO” to run. Note: SendObject places it's name in the message box so that you only need to hit the Return or Enter key to run it again.
More Tools
The following Tools are run from the Tools Card only:
SoundMaker uses the soundCapToRes XFCN to convert sound data format files to HyperCard “snd ” resources. You will be asked to choose a source file and destination file (please do not choose Developer's Domicile) and then presented with a dialog to choose the sampling rate of the original sound and prompted for a name. Make sure there are no spaces or punctuation in the name. If you wish to have spaces then change the name after conversion with ResCopy. WARNING! Do NOT attempt to place a new sound into a stack which does not have a resource fork (any stack which has never has a resource added to it). A crash will result. To prevent this simply use ResEdit to open all your stacks without resource forks (in ResEdit the icon of a file without a resource fork looks like a plain document without “text”). Or just open any stack with ResCopy. This automatically creates a resource fork in that stack. Known bug: sometimes the sound will not play.
MassCompact is used to compact all stacks in a specified folder. Hold down the Shift key to halt execution. MassCompact was originally written by Brian D. McLean D.D.S. It can only be run from Developer’s Domicile. Note: Passwords must be entered when compacting password protected stacks. Entering the wrong password will abort execution of the MassCompact script.
Preferences Card
Similar in function to the original Home stack's Preferences card but with many more choices. Here you may also turn on or off the Macintalk speech synthesis (the Macintalk speech driver is not supplied with Developer’s Domicile). You may elect to keep Macintalk active in all HyperCard stacks or only in Developer's Domicile (buttons “All Stacks” & “Home Only”). Macintalk will speak the menu choices if the “Speak Menu Choice” button is checked. Checking “Hide Msg Box on closeStack” will close the message box whenever you leave a stack (provided that stack passes the closeStack message). Conversely, leaving the button unchecked will allow the message box to remain open as you navigate from stack to stack (unless those stacks close the message box). All other functions of the Preferences card are same as in the original Home stack.
Speech Card
With the Speech Card you may adjust the pitch, rate, and volume of Macintalk. The volume control also controls the loudness of beeps and sounds (but only in HyperCard). Press the “Speak” button to have Macintalk speak your words. “Translate” puts the phoneme translation of a text string into the message box. “SayPhonetic” speaks the phonetic string in the message box. These functions are used to optimize the Macintalk pronunciation of a given string.
The speech may also be turned on and off from this card and the mode may be set for either “Natural” or “Robotic” speech. Developer's Domicile defaults the Macintalk speech to be a bit faster and deeper than traditional.
The Macintalk speech driver is not necessary to run Developer's Domicile, but if you want Macintalk to be active make sure that the Macintalk file is in your System folder (Macintalk version 1.3 or greater for Mac II). If you do not wish to use Macintalk, then uncheck the “Speech” button on the Preferences or Speech Card.
Sound Card
Here one may assign any available sound resource to any of the 34 listed HyperCard system messages. Click and hold (& keep holding if you don't have a very fast Mac) on a sound name to pop up a menu to link a sound to the associated system message (initialize). To initialize all of the sounds at once, press the “INITIALIZE SOUNDS” button. You would most likely want to do this if you have not checked the “Initialize sounds on startUp” button. As initializing the sounds takes a while you may wish to leave this button unchecked. Note: The pop-up menus will not pop up on the correct sounds until the sounds have been initialized. If a pop-up menu fails to pop up or has no contents, hit the “INITIALIZE SOUNDS” button again. This problem tends to happen with the lower buttons when used on a Mac with the small screen.
Lists Card
This card contains four development tools to create various lists.
Res•List searches all files or stacks in a designated folder for selected resources. This is very useful for creating lists of resources such as FONTs, DAs, ICONs, XCMDs, etc. To configure the resources to be logged, click on the “Res•List” button and choose “Configure.” You may now select which resources Res•List will search for and report. The resource type “????” is for user customization. Res•List will run faster if fewer resources are searched for. Normally the “Log DevDom resources” button is unchecked as it takes a long time to list all of its resources. You may choose to list all file types or only HyperCard stacks. After you have configured Res•List, click on “Show•List” to bring back the List Field or on “Res•List” to run it . Now choose any file in the folder who's files you wish to resourcefully investigate. Res•List uses the Resources XFCN to gather the resources. Resources XFCN will only read resources with names. Unnamed resources are ignored. Note: there is a problem with the this version of Resources XFCN which causes it to report nonexistent and/or extensive resources in stacks that have no resources at all. Typical examples are listing of the nonexistent FONT resource “.Clinton”, or listing Developer's Domicile's resources for another stack. This happens with stacks and files that have no resource fork and the cure is mentioned above in the SoundMaker paragraph. Warning: Resources XFCN may cause a System crash if it tries to read the resource fork of a non-stack file which does not have a resource fork. Be careful of this. Please make sure all files to be Res•Listed have a resource fork before running Res•List.
Script•List copies all the scripts from a stack and puts them into the List Field. However, HyperCard has a limit of 30000 characters in any field or script. Often the List Field will not hold an entire stack’s scripts. Script•List attempts to predict when this will happen and it may present a dialog asking if you wish to list only the button and field scripts or if you want to attempt to list everything.
Card•List creates a list of the name of each card in a stack and its associated background. It is useful for investigating the structure of a stack. This is primarily for determining which cards belong to which background.
Text•List lists the text contained in all background and card fields in a selected stack. This is a quick way to export data from a stack.
With each of these listing tools you may replace the existing information in the List Field or add the new data to it (provided there is sufficient room). This allows easy comparison between stacks.
Although a field can hold up to 30000 characters, the practical limit for a scrolling field is somewhat less. The above scripts will place a maximum of only 29200 characters into the List Field.
Paths Background
As with the original Home Stack, Developer's Domicile records the paths to stacks, applications, and documents. This record can be found on cards “Stacks,” “Applications,” and “Documents.”
Shareware Notice
This card is the most important part of Developer's Domicile. A little humor is to be had here as well.
A word about Shareware
I am not going to demand that you either pay me my money or else you must erase your copy of Developer’s Domicile. That seems rather counterproductive. I never did understand the logic of insisting that someone erase their copy of a shareware program that could be given to someone else who may, after all, actually register. And besides, I just don’t like that attitude. Shareware authors who spend excessive words threatening, cajoling and generally badgering the user are a sad lot and should seek commercial publishers if they can’t live with the situation (assuming their programs warrant commercial distribution). But that’s not to say that Developer’s Domicile is “Happyware” or “Who-cares-ware” or “Some-such-other-ware”. It is certainly NOT “freeware.” If you use Developer’s Domicile as your Home stack please send me $15 as I did put quite a lot of work into it with some small hope of a check in the mail every now or then.
Miscellaneous Features
To speed up loading of Developer’s Domicile hold down the Option key while HyperCard is loading. This skips setting the message box for large monitors, initializing the sounds and checking for version 1.2 of HyperCard.
Developer's Domicile's credits can be seen by choosing "About Developer's Domicile…" from the Apple menu.
A concise "Help" screen is available by pressing the "help" key on extended keyboards or by choosing it via the Apple menu.
Also included in the Developer’s Domicile package are three INITs (Startup documents) which show the Developer’s Domicile icons during start up. They will be in color on color monitors. These files are optional and may be dispensed with entirely.
System Messages
Many of the features found in Developer’s Domicile are activated by handlers found in DevDom’s stack script. This script is in the HyperCard message hierarchy for all stacks which is why handlers in this script are active for all stacks. However, if a message is intercepted before reaching this script those handlers will have no effect. To prevent this be sure to pass those messages from the handlers in your stacks. For example:
on openStack
do something
pass openStack -- this passes the “openStack” message up the hierarchy
end openStack
Without the “pass openStack” line the “openStack” message would be stopped by this handler and prevent an openStack handler in Home from functioning. Unless specifically intended otherwise, almost all system messages should be passed from scripts in cards, backgrounds, and stacks. This is especially true of startUp, open/close:Stack/Background/Card, idle, and mouseUp/Down.
Many times “doMenu” messages may be intercepted by handlers up the hierarchy that the stack author did not expect. If it is vital to the operation of your script that the “doMenu” message be executed then it is best to send the message directly to HyperCard. For example: ‘send “doMenu Go Wild” to HyperCard’ will bypass any doMenu handler in the hierarchy which would normally trap for “Go Wild.” This also makes your scripts more modular and with less chance of being inadvertently trapped.
Script Limits
Any script or field in HyperCard may contain no more than 30000 characters (I have found the limit for scripts to be somewhat flexible). HyperCard beeps at you when you close a script that contains just slightly too many characters. The stack script of Developer’s Domicile contains approximately 29000 characters. Thus, there is little room for comments or further expansion. If you wish to add your own tools which will function in other stacks then some handlers may need to be removed from Developer’s Domicile’s stack script and placed into the background script. These handlers will then cease to function in other stacks as they will no longer be in the HyperCard hierarchy. So far I have been unable to create a handler that effectively re-routes messages from lower stacks to the Home stack’s background script.
Button Installer Scripts
Many stacks have installer scripts to paste their icon and button into your Home stack. The “Stacks” Card is configured with a full complement of buttons. Please do not add any extra buttons to it. When you get a stack that asks to install a button in your Home stack go ahead and do it. Then go to that button, copy its script if there are any “twists” to it, and then use DevDom’s own stack installation procedure (click on an Empty button). You may wish to incorporate portions of the script you copied. The icon which was pasted into DevDom during installation will be available for use in your new button. Don’t forget to delete the “foreign” button.
ScriptEdit Users
The basic scripts necessary to run ScriptEdit are already incorporated into Developer’s Domicile. Therefore to install ScriptEdit, simply copy the ScriptEdit XCMD into Developer’s Domicile. If you wish to use any of ScriptEdit’s optional scripts install them in the normal manner from the ScriptEdit Installation stack (FunctionKey “F12” is currently set to open ScriptEdit).
Phantom Icons
If you are running Macintalk you may find a strange thing happening. Icons pasted into DevDom or another stack may not appear there when viewed with ResCopy or ResEdit. They are visible in the HyperCard icon picker window and they are placed at the very top, above DevDom’s icons. What has happened is that the icon was pasted into the “uppermost” open file, which at the time was not DevDom but probably Macintalk. The missing or phantom icons would then be found in Macintalk’s resource fork. The same can happen with other drivers active in HyperCard such as HyperAnimator’s RAVE driver. So if you usually run Macintalk it is suggested to periodically check it for wayward icons and other resources.
Undocumented Features
Here is where I would document the undocumented features if I were going to document them. But I'm not going to.
 
The following is information regarding the XCMDs and XFCNs used in Developer's Domicile. “Source” refers to where I got the external from and is not necessarily the only source.
External: AdjustVolume & FetchVolume
Version: Unknown
Author: Christopher Miller
Organization: Philosopht
Address: 4112 Westbrook Drive 23
Ames, IA 50010
Source: Philosopht XSTACK
Copyright Info: “Certain externals in this stack developed by
If you use any of these external resources in another HyperCard stack, please send the author of that external the appropriate shareware payment where applicable.
“Developed with the aid of the Developer Stack.
To receive the latest version of the Developer Stack, send $10.00 to:
AnalytX
Box 388
Southampton, PA 18966”
Special thanks to Jay Hodgdon, who's XCMDs make HyperCard much more Mac-like.